reftests: Enforce default settings
authorMatthias Clasen <mclasen@redhat.com>
Mon, 19 Jul 2021 17:10:31 +0000 (13:10 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 19 Jul 2021 17:26:32 +0000 (13:26 -0400)
Set all settings to their default values, so we
are less dependent on the environment to be set
up just right. In particular, this fixes animations
being disabled when we happen to run in a vm.

testsuite/reftests/gtk-reftest.c

index efe48e6480102beb9f5040d9ceca00a78b64f151..cd153969a8405f4c1531885eb05ddd8ad782ca6e 100644 (file)
@@ -453,6 +453,37 @@ log_writer (GLogLevelFlags   log_level,
   return g_log_writer_standard_streams (log_level, fields, n_fields, user_data);
 }
 
+static void
+enforce_default_settings (void)
+{
+  GtkSettings *settings;
+  GObjectClass *klass;
+  GParamSpec **pspecs;
+  guint n_pspecs;
+  int i;
+
+  settings = gtk_settings_get_default ();
+
+  klass = g_type_class_ref (G_OBJECT_TYPE (settings));
+
+  pspecs = g_object_class_list_properties (klass, &n_pspecs);
+  for (i = 0; i < n_pspecs; i++)
+    {
+      GParamSpec *pspec = pspecs[i];
+      const GValue *value;
+
+      if ((pspec->flags & G_PARAM_WRITABLE) == 0)
+        continue;
+
+      value = g_param_spec_get_default_value (pspec);
+      g_object_set_property (G_OBJECT (settings), pspec->name, value);
+    }
+
+  g_free (pspecs);
+
+  g_type_class_unref (klass);
+}
+
 int
 main (int argc, char **argv)
 {
@@ -503,6 +534,8 @@ main (int argc, char **argv)
    */
   chdir (basedir);
 
+  enforce_default_settings ();
+
   g_log_set_writer_func (log_writer, NULL, NULL);
 
   result = g_test_run ();